package com.zhxy.util.publish;

/**
 * 发布者
 * @author 刘勉
 *
 */
public interface Publisher<P> {
	
	/**
	 * 为一个订阅者订阅消息
	 * @param subscriber 订阅者
	 * @param name 消息
	 * @throws SubscribeException
	 */
	void subscribe(Subscriber<P> subscriber, String name) throws SubscribeException;
	
	/**
	 * 为一个订阅者取消已订阅消息
	 * @param subscriber 订阅者
	 * @param name 消息
	 * @throws SubscribeException
	 */
	void unsubscribe(Subscriber<P> subscriber, String name) throws SubscribeException;
	
	/**
	 * 为一个订阅者取消全部的已订阅信息
	 * @param subscriber 订阅者
	 * @throws SubscribeException
	 */
	void cleanSubscribe(Subscriber<P> subscriber) throws SubscribeException;
}
